Application programming interfaces enable software programs to communicate with one another. Through the use of dynamic link libraries, application programming interfaces may perform multimedia tasks such as game programming and video programming. Because the application programming interfaces may be platform independent, they may allow a programmer to quickly access three dimensional graphics and sounds to create a computer game, for example, without specific knowledge of the underlying hardware in the computing device.
A computing platform may create a collection of application programming interfaces. For example, Microsoft® Corporation provides a collection of application programming interfaces called DirectX® which are often used for multimedia tasks on Microsoft® platforms. The application programming interfaces in DirectX® are designed to copy data from the graphical processing unit memory to a resource. The application may then access the copied data via the resource. While this model is beneficial for discrete graphical processing units with local memory, the model is wasteful in integrated graphical processing units. Graphical processing units with unified memory architecture have all the resources stored in the same memory and therefore the copying of resources potentially wastes memory, performance and power. Accordingly, there may be a need for improved techniques to solve these and other problems.